import { defineStore } from "pinia";
import { ref } from 'vue'

// 定义一个用户的状态
export const useUserInfoStore = defineStore('userInfo', () => {
    // 定义全局用户数据 -------- state
    const userid = ref(localStorage.getItem('userid') || '')
    const token = ref(localStorage.getItem('token') || '')
    const loginState = ref(localStorage.getItem('loginState') == 'true')


    // 定义一个修改全局状态的方法 ----------- actions
    function changeUserInfoState(userInfo) {
        userid.value = userInfo.userid
        token.value = userInfo.token
        loginState.value = userInfo.loginState


        // 因为全局状态中的数据在页面刷新的时候会恢复到初始状态(数据丢失)
        // 解决方法通常是使用插件自动本地存储，手动本地存储

        localStorage.setItem('userid', userInfo.userid)
        localStorage.setItem('token', userInfo.token)
        localStorage.setItem('loginState', userInfo.loginState)

    }

    // 将全局状态中的属性和方法暴露出去
    return {
        changeUserInfoState,
        userid,
        token,
        loginState
    }

})

